﻿using System;
using System.IO;
using System.ComponentModel;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.Security;

namespace PickGold.Nulls
{
	/// <summary>
	/// NullTextWriter
	/// </summary>
	public sealed class NullTextWriter : TextWriter
	{
		/// <summary>
		/// 唯一实例
		/// </summary>
		public readonly static TextWriter Value = new NullTextWriter();


		private NullTextWriter()
		{
			if (Value != null)
				throw new InvalidOperationException();
		}

		// 摘要:
		//     当在派生类中重写时，返回用来写输出的 System.Text.Encoding。
		//
		// 返回结果:
		//     用来写入输出的 Encoding。
		public override Encoding Encoding
		{
			get
			{
				return Encoding.Default;
			}
		}
		//
		// 摘要:
		//     获取控制格式设置的对象。
		//
		// 返回结果:
		//     特定区域性的 System.IFormatProvider 对象，或者如果未指定任何其他区域性，则为当前区域性的格式设置。
		//public override IFormatProvider FormatProvider { get; }

		//
		// 摘要:
		//     获取或设置由当前 TextWriter 使用的行结束符字符串。
		//
		// 返回结果:
		//     当前 TextWriter 的行结束符字符串。
		//public override string NewLine { get; set; }

		// 摘要:
		//     关闭当前编写器并释放任何与该编写器关联的系统资源。
		//public override void Close();
		//
		// 摘要:
		//     释放由 System.IO.TextWriter 占用的非托管资源，还可以另外再释放托管资源。
		//
		// 参数:
		//   disposing:
		//     为 true 则释放托管资源和非托管资源；为 false 则仅释放非托管资源。
		//protected override void Dispose(bool disposing);
		//
		// 摘要:
		//     清理当前编写器的所有缓冲区，使所有缓冲数据写入基础设备。
		public override void Flush() { }
		//
		// 摘要:
		//     将 Boolean 值的文本表示形式写入文本流。
		//
		// 参数:
		//   value:
		//     要写入的 Boolean。
		//
		// 异常:
		//   System.ObjectDisposedException:
		//     System.IO.TextWriter 是关闭的。
		//
		//   System.IO.IOException:
		//     发生 I/O 错误。
		public override void Write(bool value) { }
		//
		// 摘要:
		//     将字符写入文本流。
		//
		// 参数:
		//   value:
		//     要写入文本流中的字符。
		//
		// 异常:
		//   System.ObjectDisposedException:
		//     System.IO.TextWriter 是关闭的。
		//
		//   System.IO.IOException:
		//     发生 I/O 错误。
		public override void Write(char value) { }
		//
		// 摘要:
		//     将字符数组写入文本流。
		//
		// 参数:
		//   buffer:
		//     要写入文本流中的字符数组。
		//
		// 异常:
		//   System.ObjectDisposedException:
		//     System.IO.TextWriter 是关闭的。
		//
		//   System.IO.IOException:
		//     发生 I/O 错误。
		public override void Write(char[] buffer) { }
		//
		// 摘要:
		//     将十进制值的文本表示形式写入文本流。
		//
		// 参数:
		//   value:
		//     要写入的十进制值。
		//
		// 异常:
		//   System.ObjectDisposedException:
		//     The System.IO.TextWriter is closed.
		//
		//   System.IO.IOException:
		//     发生 I/O 错误。
		public override void Write(decimal value) { }
		//
		// 摘要:
		//     将 8 字节浮点值的文本表示形式写入文本流。
		//
		// 参数:
		//   value:
		//     要写入的 8 字节浮点值。
		//
		// 异常:
		//   System.ObjectDisposedException:
		//     System.IO.TextWriter 是关闭的。
		//
		//   System.IO.IOException:
		//     发生 I/O 错误。
		public override void Write(double value) { }
		//
		// 摘要:
		//     将 4 字节浮点值的文本表示形式写入文本流。
		//
		// 参数:
		//   value:
		//     要写入的 4 字节浮点值。
		//
		// 异常:
		//   System.ObjectDisposedException:
		//     System.IO.TextWriter 是关闭的。
		//
		//   System.IO.IOException:
		//     发生 I/O 错误。
		public override void Write(float value) { }
		//
		// 摘要:
		//     将 4 字节有符号整数的文本表示形式写入文本流。
		//
		// 参数:
		//   value:
		//     要写入的 4 字节有符号整数。
		//
		// 异常:
		//   System.ObjectDisposedException:
		//     System.IO.TextWriter 是关闭的。
		//
		//   System.IO.IOException:
		//     发生 I/O 错误。
		public override void Write(int value) { }
		//
		// 摘要:
		//     将 8 字节有符号整数的文本表示形式写入文本流。
		//
		// 参数:
		//   value:
		//     要写入的 8 字节有符号整数。
		//
		// 异常:
		//   System.ObjectDisposedException:
		//     System.IO.TextWriter 是关闭的。
		//
		//   System.IO.IOException:
		//     发生 I/O 错误。
		public override void Write(long value) { }
		//
		// 摘要:
		//     通过在对象上调用 ToString 将此对象的文本表示形式写入文本流。
		//
		// 参数:
		//   value:
		//     要写入的对象。
		//
		// 异常:
		//   System.ObjectDisposedException:
		//     System.IO.TextWriter 是关闭的。
		//
		//   System.IO.IOException:
		//     发生 I/O 错误。
		public override void Write(object value) { }
		//
		// 摘要:
		//     将字符串写入文本流。
		//
		// 参数:
		//   value:
		//     要写入的字符串。
		//
		// 异常:
		//   System.ObjectDisposedException:
		//     The System.IO.TextWriter is closed.
		//
		//   System.IO.IOException:
		//     发生 I/O 错误。
		public override void Write(string value) { }
		//
		// 摘要:
		//     将 4 字节无符号整数的文本表示形式写入文本流。
		//
		// 参数:
		//   value:
		//     要写入的 4 字节无符号整数。
		//
		// 异常:
		//   System.ObjectDisposedException:
		//     System.IO.TextWriter 是关闭的。
		//
		//   System.IO.IOException:
		//     发生 I/O 错误。
		[CLSCompliant(false)]
		public override void Write(uint value) { }
		//
		// 摘要:
		//     将 8 字节无符号整数的文本表示形式写入文本流。
		//
		// 参数:
		//   value:
		//     要写入的 8 字节无符号整数。
		//
		// 异常:
		//   System.ObjectDisposedException:
		//     System.IO.TextWriter 是关闭的。
		//
		//   System.IO.IOException:
		//     发生 I/O 错误。
		[CLSCompliant(false)]
		public override void Write(ulong value) { }
		//
		// 摘要:
		//     使用与 System.String.Format(System.String,System.Object) 相同的语义写出格式化的字符串。
		//
		// 参数:
		//   format:
		//     格式化字符串。
		//
		//   arg0:
		//     要写入格式化字符串的对象。
		//
		// 异常:
		//   System.ArgumentNullException:
		//     format 为 null。
		//
		//   System.ObjectDisposedException:
		//     System.IO.TextWriter 是关闭的。
		//
		//   System.IO.IOException:
		//     发生 I/O 错误。
		//
		//   System.FormatException:
		//     格式中的格式规范无效。- 或 -用于指示要设置格式的参数的数字小于零，或者大于或等于所提供的要设置格式的对象的数目。
		public override void Write(string format, object arg0) { }
		//
		// 摘要:
		//     使用与 System.String.Format(System.String,System.Object) 相同的语义写出格式化的字符串。
		//
		// 参数:
		//   format:
		//     格式化字符串。
		//
		//   arg:
		//     要写入格式化字符串的对象数组。
		//
		// 异常:
		//   System.ArgumentNullException:
		//     format 或 arg 为 null。
		//
		//   System.ObjectDisposedException:
		//     System.IO.TextWriter 是关闭的。
		//
		//   System.IO.IOException:
		//     发生 I/O 错误。
		//
		//   System.FormatException:
		//     格式中的格式规范无效。- 或 -用来指示要设置格式的参数的数字小于零，或者大于或等于 arg。Length.
		public override void Write(string format, params object[] arg) { }
		//
		// 摘要:
		//     将字符的子数组写入文本流。
		//
		// 参数:
		//   buffer:
		//     要从中写出数据的字符数组。
		//
		//   index:
		//     在缓冲区中开始索引。
		//
		//   count:
		//     要写入的字符数。
		//
		// 异常:
		//   System.ArgumentException:
		//     缓冲区长度减去 index 小于 count。
		//
		//   System.ArgumentNullException:
		//     The buffer parameter is null.
		//
		//   System.ArgumentOutOfRangeException:
		//     index 或 count 为负。
		//
		//   System.ObjectDisposedException:
		//     System.IO.TextWriter 是关闭的。
		//
		//   System.IO.IOException:
		//     发生 I/O 错误。
		public override void Write(char[] buffer, int index, int count) { }
		//
		// 摘要:
		//     使用与 System.String.Format(System.String,System.Object) 相同的语义写出格式化的字符串。
		//
		// 参数:
		//   format:
		//     格式化字符串。
		//
		//   arg0:
		//     要写入格式化字符串的对象。
		//
		//   arg1:
		//     要写入格式化字符串的对象。
		//
		// 异常:
		//   System.ArgumentNullException:
		//     format 为 null。
		//
		//   System.ObjectDisposedException:
		//     System.IO.TextWriter 是关闭的。
		//
		//   System.IO.IOException:
		//     发生 I/O 错误。
		//
		//   System.FormatException:
		//     格式中的格式规范无效。- 或 -用于指示要设置格式的参数的数字小于零，或者大于或等于所提供的要设置格式的对象的数目。
		public override void Write(string format, object arg0, object arg1) { }
		//
		// 摘要:
		//     使用与 System.String.Format(System.String,System.Object) 相同的语义写出格式化的字符串。
		//
		// 参数:
		//   format:
		//     格式化字符串。
		//
		//   arg0:
		//     要写入格式化字符串的对象。
		//
		//   arg1:
		//     要写入格式化字符串的对象。
		//
		//   arg2:
		//     要写入格式化字符串的对象。
		//
		// 异常:
		//   System.ArgumentNullException:
		//     format 为 null。
		//
		//   System.ObjectDisposedException:
		//     System.IO.TextWriter 是关闭的。
		//
		//   System.IO.IOException:
		//     发生 I/O 错误。
		//
		//   System.FormatException:
		//     格式中的格式规范无效。- 或 -用于指示要设置格式的参数的数字小于零，或者大于或等于所提供的要设置格式的对象的数目。
		public override void Write(string format, object arg0, object arg1, object arg2) { }
		//
		// 摘要:
		//     将行结束符写入文本流。
		//
		// 异常:
		//   System.ObjectDisposedException:
		//     System.IO.TextWriter 是关闭的。
		//
		//   System.IO.IOException:
		//     发生 I/O 错误。
		public override void WriteLine() { }
		//
		// 摘要:
		//     将后跟行结束符的 Boolean 的文本表示形式写入文本流。
		//
		// 参数:
		//   value:
		//     要写入的 Boolean。
		//
		// 异常:
		//   System.ObjectDisposedException:
		//     System.IO.TextWriter 是关闭的。
		//
		//   System.IO.IOException:
		//     发生 I/O 错误。
		public override void WriteLine(bool value) { }
		//
		// 摘要:
		//     将后跟行结束符的字符写入文本流。
		//
		// 参数:
		//   value:
		//     要写入文本流中的字符。
		//
		// 异常:
		//   System.ObjectDisposedException:
		//     System.IO.TextWriter 是关闭的。
		//
		//   System.IO.IOException:
		//     发生 I/O 错误。
		public override void WriteLine(char value) { }
		//
		// 摘要:
		//     将后跟行结束符的字符数组写入文本流。
		//
		// 参数:
		//   buffer:
		//     从其读取数据的字符数组。
		//
		// 异常:
		//   System.ObjectDisposedException:
		//     System.IO.TextWriter 是关闭的。
		//
		//   System.IO.IOException:
		//     发生 I/O 错误。
		public override void WriteLine(char[] buffer) { }
		//
		// 摘要:
		//     将后面带有行结束符的十进制值的文本表示形式写入文本流。
		//
		// 参数:
		//   value:
		//     要写入的十进制值。
		//
		// 异常:
		//   System.ObjectDisposedException:
		//     The System.IO.TextWriter is closed.
		//
		//   System.IO.IOException:
		//     发生 I/O 错误。
		public override void WriteLine(decimal value) { }
		//
		// 摘要:
		//     Writes the text representation of a 8-byte floating-point value followed
		//     by a line terminator to the text stream.
		//
		// 参数:
		//   value:
		//     要写入的 8 字节浮点值。
		//
		// 异常:
		//   System.ObjectDisposedException:
		//     The System.IO.TextWriter is closed.
		//
		//   System.IO.IOException:
		//     发生 I/O 错误。
		public override void WriteLine(double value) { }
		//
		// 摘要:
		//     将后跟行结束符的 4 字节浮点值的文本表示形式写入文本流。
		//
		// 参数:
		//   value:
		//     要写入的 4 字节浮点值。
		//
		// 异常:
		//   System.ObjectDisposedException:
		//     The System.IO.TextWriter is closed.
		//
		//   System.IO.IOException:
		//     发生 I/O 错误。
		public override void WriteLine(float value) { }
		//
		// 摘要:
		//     将后跟行结束符的 4 字节有符号整数的文本表示形式写入文本流。
		//
		// 参数:
		//   value:
		//     要写入的 4 字节有符号整数。
		//
		// 异常:
		//   System.ObjectDisposedException:
		//     System.IO.TextWriter 是关闭的。
		//
		//   System.IO.IOException:
		//     发生 I/O 错误。
		public override void WriteLine(int value) { }
		//
		// 摘要:
		//     将后跟行结束符的 8 字节有符号整数的文本表示形式写入文本流。
		//
		// 参数:
		//   value:
		//     要写入的 8 字节有符号整数。
		//
		// 异常:
		//   System.ObjectDisposedException:
		//     System.IO.TextWriter 是关闭的。
		//
		//   System.IO.IOException:
		//     发生 I/O 错误。
		public override void WriteLine(long value) { }
		//
		// 摘要:
		//     通过在对象上调用 ToString 将后跟行结束符的此对象的文本表示形式写入文本流。
		//
		// 参数:
		//   value:
		//     要写入的对象。如果 value 为 null，则仅写入行结束字符。
		//
		// 异常:
		//   System.ObjectDisposedException:
		//     System.IO.TextWriter 是关闭的。
		//
		//   System.IO.IOException:
		//     发生 I/O 错误。
		public override void WriteLine(object value) { }
		//
		// 摘要:
		//     将后跟行结束符的字符串写入文本流。
		//
		// 参数:
		//   value:
		//     要写入的字符串。如果 value 为 null，则仅写入行结束字符。
		//
		// 异常:
		//   System.ObjectDisposedException:
		//     System.IO.TextWriter 是关闭的。
		//
		//   System.IO.IOException:
		//     发生 I/O 错误。
		[SecuritySafeCritical]
		public override void WriteLine(string value) { }
		//
		// 摘要:
		//     将后跟行结束符的 4 字节无符号整数的文本表示形式写入文本流。
		//
		// 参数:
		//   value:
		//     要写入的 4 字节无符号整数。
		//
		// 异常:
		//   System.ObjectDisposedException:
		//     System.IO.TextWriter 是关闭的。
		//
		//   System.IO.IOException:
		//     发生 I/O 错误。
		[CLSCompliant(false)]
		public override void WriteLine(uint value) { }
		//
		// 摘要:
		//     将后跟行结束符的 8 字节无符号整数的文本表示形式写入文本流。
		//
		// 参数:
		//   value:
		//     要写入的 8 字节无符号整数。
		//
		// 异常:
		//   System.ObjectDisposedException:
		//     System.IO.TextWriter 是关闭的。
		//
		//   System.IO.IOException:
		//     发生 I/O 错误。
		[CLSCompliant(false)]
		public override void WriteLine(ulong value) { }
		//
		// 摘要:
		//     使用与 System.String.Format(System.String,System.Object) 相同的语义写出格式化的字符串和一个新行。
		//
		// 参数:
		//   format:
		//     格式化的字符串。
		//
		//   arg0:
		//     要写入已格式化字符串的对象。
		//
		// 异常:
		//   System.ArgumentNullException:
		//     format 为 null。
		//
		//   System.ObjectDisposedException:
		//     System.IO.TextWriter 是关闭的。
		//
		//   System.IO.IOException:
		//     发生 I/O 错误。
		//
		//   System.FormatException:
		//     格式中的格式规范无效。- 或 -用于指示要设置格式的参数的数字小于零，或者大于或等于所提供的要设置格式的对象的数目。
		public override void WriteLine(string format, object arg0) { }
		//
		// 摘要:
		//     使用与 System.String.Format(System.String,System.Object) 相同的语义写出格式化的字符串和一个新行。
		//
		// 参数:
		//   format:
		//     格式化字符串。
		//
		//   arg:
		//     要写入格式化字符串的对象数组。
		//
		// 异常:
		//   System.ArgumentNullException:
		//     字符串或对象作为 null 传入。
		//
		//   System.ObjectDisposedException:
		//     System.IO.TextWriter 是关闭的。
		//
		//   System.IO.IOException:
		//     发生 I/O 错误。
		//
		//   System.FormatException:
		//     格式中的格式规范无效。- 或 -用来指示要设置格式的参数的数字小于零，或者大于或等于 arg.Length。
		public override void WriteLine(string format, params object[] arg) { }
		//
		// 摘要:
		//     将后跟行结束符的字符子数组写入文本流。
		//
		// 参数:
		//   buffer:
		//     从其读取数据的字符数组。
		//
		//   index:
		//     开始读取的 buffer 中的索引。
		//
		//   count:
		//     要写入的最大字符数。
		//
		// 异常:
		//   System.ArgumentException:
		//     缓冲区长度减去 index 小于 count。
		//
		//   System.ArgumentNullException:
		//     The buffer parameter is null.
		//
		//   System.ArgumentOutOfRangeException:
		//     index 或 count 为负。
		//
		//   System.ObjectDisposedException:
		//     System.IO.TextWriter 是关闭的。
		//
		//   System.IO.IOException:
		//     发生 I/O 错误。
		public override void WriteLine(char[] buffer, int index, int count) { }
		//
		// 摘要:
		//     使用与 System.String.Format(System.String,System.Object) 相同的语义写出格式化的字符串和一个新行。
		//
		// 参数:
		//   format:
		//     格式化字符串。
		//
		//   arg0:
		//     要写入格式字符串的对象。
		//
		//   arg1:
		//     要写入格式字符串的对象。
		//
		// 异常:
		//   System.ArgumentNullException:
		//     format 为 null。
		//
		//   System.ObjectDisposedException:
		//     System.IO.TextWriter 是关闭的。
		//
		//   System.IO.IOException:
		//     发生 I/O 错误。
		//
		//   System.FormatException:
		//     格式中的格式规范无效。- 或 -用于指示要设置格式的参数的数字小于零，或者大于或等于所提供的要设置格式的对象的数目。
		public override void WriteLine(string format, object arg0, object arg1) { }
		//
		// 摘要:
		//     使用与 System.String.Format(System.String,System.Object) 相同的语义写出格式化的字符串和一个新行。
		//
		// 参数:
		//   format:
		//     格式化字符串。
		//
		//   arg0:
		//     要写入格式字符串的对象。
		//
		//   arg1:
		//     要写入格式字符串的对象。
		//
		//   arg2:
		//     要写入格式字符串的对象。
		//
		// 异常:
		//   System.ArgumentNullException:
		//     format 为 null。
		//
		//   System.ObjectDisposedException:
		//     System.IO.TextWriter 是关闭的。
		//
		//   System.IO.IOException:
		//     发生 I/O 错误。
		//
		//   System.FormatException:
		//     格式中的格式规范无效。- 或 -用于指示要设置格式的参数的数字小于零，或者大于或等于所提供的要设置格式的对象的数目。
		public override void WriteLine(string format, object arg0, object arg1, object arg2) { }
	}
}
